package com.demo.service.serviceImpl;

import java.util.UUID;

import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.demo.dao.UserDao;
import com.demo.entity.User;
import com.demo.service.UserService;

@Service
public class UserServiceImpl implements UserService {

	@Autowired
	private UserDao userDao;

	@Override
	public int insertUser(User user) {
		user.setId(UUID.randomUUID().toString().replaceAll("-", ""));
		// 将用户名作为盐值
		ByteSource salt = ByteSource.Util.bytes(user.getUsername());
		/*
		 * MD5加密： 使用SimpleHash类对原始密码进行加密。
		 * 第一个参数代表使用MD5方式加密
		 * 第二个参数为原始密码
		 * 第三个参数为盐值，即用户名 
		 * 第四个参数为加密次数 
		 * 最后用toHex()方法将加密后的密码转成String
		 */
		String newPassWord = new SimpleHash("MD5",user.getPassword(),salt,1024).toHex();
		user.setPassword(newPassWord);
		//查看用户是否存在
		User selectByUserName = userDao.selectByUserName(user.getUsername());
		if(selectByUserName == null){
			int result = userDao.insert(user);
			return result;
		}
		return 0;
	}

	@Override
	public User selectByUserName(String userName) {
		User getUser = userDao.selectByUserName(userName);
		return getUser;
	}

}
